哈囉,終於邁入鐵人賽的第五天(歡呼),繼上次我們學會使用Fragment來製作抽屜之後,
這次想要介紹再繼續介紹其他類型的Fragment,讓大家清楚了解Fragment的妙用喔,
那這次要提到的就是DialogFragment,Dialog顧名思義就是對話方塊,而DialogFragment,
就是一個漂浮在Activity上的對話方塊囉!
它可以用在,假設有一個App,常常使用到Yes/No的對話方塊,但是又不想要每使用一次就建立一個的話,
你可以使用DialogFragment來重複使用,當然Dialog跟Fragment一樣,
可以自訂義對話方塊哦,是不是很方便呢!
※因為Dialog也是一個Fragment,所以它有屬於自己的生命週期(重點筆記)
那我們就開始來試著做一個AlertDialog的FragmentDialog吧!

Step1. 建立AlertDialog的DialogFragment
//該Class必須繼承DialogFragment
public static class MyAlertDialogFragment extends DialogFragment {
    //在該實例中傳入顯示的標題(title)
    public static MyAlertDialogFragment newInstance(int title) {
        MyAlertDialogFragment frag = new MyAlertDialogFragment();
        Bundle args = new Bundle();
        args.putInt("title", title); //傳入title參數
        frag.setArguments(args);
        return frag;
    }
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        int title = getArguments().getInt("title"); //取得參數title
	//回傳AlertDialog
        return new AlertDialog.Builder(getActivity())
                .setIcon(R.drawable.alert_dialog_icon)
                .setTitle(title)
                .setPositiveButton("確定",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            ((FragmentAlertDialog)getActivity()).doPositiveClick();
                        }
                    }
                )
                .setNegativeButton("取消",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            ((FragmentAlertDialog)getActivity()).doNegativeClick();
                        }
                    }
                )
                .create();
    }
}
Step2. 在Activity中呼叫DialogFragment
public class DialogFragmentExampleActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        DialogFragment newFragment = MyAlertDialogFragment.newInstance(
            "您確定要參加鐵人賽嗎?");
        newFragment.show(getFragmentManager(), "dialog");
    }
}
public void doPositiveClick() {
    Log.i("FragmentAlertDialog", "按下確定");
}
public void doNegativeClick() {
    // Do stuff here.
    Log.i("FragmentAlertDialog", "按下取消");
}
這樣子就完成了AlertDialog的DialogFragment啦,那今天就到這邊,我們明天見囉~
以上內容皆參考官方文件:http://developer.android.com/reference/android/app/DialogFragment.html